package com.system.cacheCenterBackend.service;

import java.util.Set;

/**
 * ZSet类型缓存服务接口
 */
public interface ZSetCacheService {

    /**
     * 向有序集合添加元素
     *
     * @param key   键
     * @param value 值
     * @param score 分数
     * @return 是否添加成功
     */
    Boolean zsetAdd(String key, String value, double score);

    /**
     * 从有序集合移除元素
     *
     * @param key   键
     * @param value 值
     * @return 移除的元素数量
     */
    Long zsetRemove(String key, String value);

    /**
     * 获取有序集合指定范围的元素
     *
     * @param key   键
     * @param start 开始索引
     * @param end   结束索引
     * @return 元素集合
     */
    Set<String> zsetRange(String key, long start, long end);

    /**
     * 根据分数范围获取有序集合元素
     *
     * @param key 键
     * @param min 最小分数
     * @param max 最大分数
     * @return 元素集合
     */
    Set<String> zsetRangeByScore(String key, double min, double max);

    /**
     * 获取元素的分数
     *
     * @param key   键
     * @param value 值
     * @return 分数
     */
    Double zsetScore(String key, String value);

    /**
     * 获取有序集合大小
     *
     * @param key 键
     * @return 集合大小
     */
    Long zsetSize(String key);
}